package org.jsola.hr.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.core.vo.BaseVO;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

import static org.jsola.core.example.BaseExample.*;
import static org.jsola.hr.example.EmpSocInfoExample.*;

/**
 * 员工参保信息表
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "【员工参保信息表】列表展示对象")
@Data
public class EmpSocInfoListVO extends BaseVO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_ID, example = E_ID)
    private String id;

    @ApiModelProperty(notes = N_PAY_COST_TYPE, example = E_PAY_COST_TYPE)
    private Integer payCostType;

    @ApiModelProperty(notes = N_PLAN_FLAG, example = E_PLAN_FLAG)
    private Boolean planFlag;

    @ApiModelProperty(notes = N_BUSINESS_TYPE, example = E_BUSINESS_TYPE)
    private Integer businessType;

    @ApiModelProperty(notes = N_SUPPLEMENT_TYPE, example = E_SUPPLEMENT_TYPE)
    private String supplementType;

    @ApiModelProperty(notes = N_EMP_ID, example = E_EMP_ID)
    private String empId;

    @ApiModelProperty(notes = N_PROG_ID, example = E_PROG_ID)
    private String progId;

    @ApiModelProperty(notes = N_MONTH_ID, example = E_MONTH_ID)
    private String monthId;

    @ApiModelProperty(notes = N_YEAR, example = E_YEAR)
    private String year;

    @ApiModelProperty(notes = N_MONTH, example = E_MONTH)
    private String month;

    @ApiModelProperty(notes = "参保时间(就是上面两个字段拼起来)")
    private String socDateStr;

    @ApiModelProperty(notes = N_PERSONAL_SOC_AMOUNT, example = E_PERSONAL_SOC_AMOUNT)
    private BigDecimal personalSocAmount;

    @ApiModelProperty(notes = N_PAY_PROVIDENT_FUND, example = E_PAY_PROVIDENT_FUND)
    private Boolean payProvidentFund;

    @ApiModelProperty(notes = N_MONTH_REVOKE, example = E_MONTH_REVOKE)
    private Integer monthRevoke;

    @ApiModelProperty(notes = N_PERSONAL_PF_AMOUNT, example = E_PERSONAL_PF_AMOUNT)
    private BigDecimal personalPfAmount;

    @ApiModelProperty(notes = N_COMPANY_SOC_AMOUNT, example = E_COMPANY_SOC_AMOUNT)
    private BigDecimal companySocAmount;

    @ApiModelProperty(notes = N_COMPANY_PF_AMOUNT, example = E_COMPANY_PF_AMOUNT)
    private BigDecimal companyPfAmount;

    @ApiModelProperty(notes = N_SERVICE_COST, example = E_SERVICE_COST)
    private BigDecimal serviceCost;

    @ApiModelProperty(notes = N_WHETHER_LEAVE, example = E_WHETHER_LEAVE)
    private Boolean whetherLeave;

    @ApiModelProperty(notes = N_SOCIAL_SECURITY_FINE, example = E_SOCIAL_SECURITY_FINE)
    private BigDecimal socialSecurityFine;

    @ApiModelProperty(notes = N_ACCUMULATION_FUND_FINE, example = E_ACCUMULATION_FUND_FINE)
    private BigDecimal accumulationFundFine;

    @ApiModelProperty(notes = N_COMPANY_ID, example = E_COMPANY_ID)
    private String companyId;

    @ApiModelProperty(notes = N_GROUP_ID, example = E_GROUP_ID)
    private String groupId;

    @ApiModelProperty(notes = N_EMP_SOC_STATUS, example = E_EMP_SOC_STATUS)
    private Integer empSocStatus;

    @ApiModelProperty(notes = N_EMP_PF_STATUS, example = E_EMP_PF_STATUS)
    private Integer empPfStatus;

    @ApiModelProperty(notes = N_EMP_ME_STATUS, example = E_EMP_ME_STATUS)
    private Integer empMeStatus;

    @ApiModelProperty(notes = N_REFUNDS_TYPE, example = E_REFUNDS_TYPE)
    private Integer refundsType;

    @ApiModelProperty(notes = N_REFUNDS_BEGIN_TIME, example = E_REFUNDS_BEGIN_TIME)
    private Date refundsBeginTime;

    @ApiModelProperty(notes = N_REFUNDS_END_TIME, example = E_REFUNDS_END_TIME)
    private Date refundsEndTime;

    @ApiModelProperty(notes = N_GMT_CREATE, example = E_GMT_CREATE)
    private Date gmtCreate;

    @ApiModelProperty(notes = N_GMT_MODIFIED, example = E_GMT_MODIFIED)
    private Date gmtModified;

    @ApiModelProperty(notes = N_EMP_SOC_INFO_COUNT, example = E_EMP_SOC_INFO_COUNT)
    private Integer empSocInfoCount;

    @ApiModelProperty(notes = N_SOC_AMOUNT, example = E_SOC_AMOUNT)
    private BigDecimal socAmount;

    @ApiModelProperty(notes = N_PF_AMOUNT, example = E_PF_AMOUNT)
    private BigDecimal pfAmount;

    @ApiModelProperty(notes = N_PERSONAL_AMOUNT, example = E_PERSONAL_AMOUNT)
    private BigDecimal personalAmount;

    @ApiModelProperty(notes = N_COMPANY_AMOUNT, example = E_COMPANY_AMOUNT)
    private BigDecimal companyAmount;

    @ApiModelProperty(notes = N_MONTH_INCREMENT, example = E_MONTH_INCREMENT)
    private Integer monthIncrement;

    @ApiModelProperty(notes = "减员人数")
    private Integer monthStop;

    @ApiModelProperty(notes = N_NAME, example = E_NAME)
    private String name;

    @ApiModelProperty(notes = N_ID_CARD, example = E_ID_CARD)
    private String idCard;

    @ApiModelProperty(notes = N_COMPANY_NAME, example = E_COMPANY_NAME)
    private String companyName;//,-- 公司名称

    @ApiModelProperty(notes = N_NATIVE_LOCATION, example = E_NATIVE_LOCATION)
    private String nativeLocation;//, -- 户籍所在地

    @ApiModelProperty(notes = N_REG_TYOE, example = E_REG_TYOE)
    private String regType;//`, -- 户口性质

    @ApiModelProperty(notes = N_SOC_CARD, example = E_SOC_CARD)
    private String socCard;//`, -- 社保卡号

    @ApiModelProperty(notes = N_PF_CARD, example = E_PF_CARD)
    private String pfCard;//`, -- 公积金号

    @ApiModelProperty(notes = N_PROG_NAME, example = E_PROG_NAME)
    private String progName;//,-- 参保方案名称

    @ApiModelProperty(notes = N_SOC_CITY, example = E_SOC_CITY)
    private String socCity;//,-- 参保城市编码

    @ApiModelProperty(notes = N_ONLY_SOC_AMOUNT, example = E_ONLY_SOC_AMOUNT)
    private Boolean onlySocAmount;

    @ApiModelProperty(notes = N_SOC_CITY_NAME, example = E_SOC_CITY_NAME)
    private String socCityName;

    @ApiModelProperty(notes = N_SITE_ID, example = E_SITE_ID)
    private String siteId;

    @ApiModelProperty(notes = N_PROG_ITEM_LIST_VO, example = E_PROG_ITEM_LIST_VO)
    private List<SocProgItemListVO> progItemListVo;

    @ApiModelProperty(notes = N_AMOUNT_COUNT, example = E_AMOUNT_COUNT)
    private BigDecimal amountCount;

    @ApiModelProperty(notes = N_MONTH_INCREMENT_LIST, example = E_MONTH_INCREMENT_LIST)
    private List<String> monthIncrementList;

    @ApiModelProperty("人员类型")
    private Integer postType;

    @ApiModelProperty("人员状态")
    private Integer empStatus;

    @ApiModelProperty("是否不可编辑")
    private Boolean canNotEdited;

    @ApiModelProperty("当前月,是否为当前创建到的最后一个月")
    private Boolean monthWhetherCurrent;

    @ApiModelProperty("花名册备注")
    private String remark;

    @ApiModelProperty(notes = "标签")
    private String tag;

    @ApiModelProperty(notes = "渠道ID")
    private String channelId;

    @ApiModelProperty(notes = "渠道名字")
    private String channelName;

    @ApiModelProperty(notes = "人员状态")
    private String personStatus;

    @ApiModelProperty(notes = "状态类型")
    private Integer statusType;

    @ApiModelProperty(notes = "手机号")
    private String phone;

    @ApiModelProperty(notes = "员工是否被删除(就是emp_info的is_valid字段)")
    private Integer empExist;

    @ApiModelProperty(notes = "序号,导出用")
    private Integer index;

    @ApiModelProperty(notes = "差额费用表头")
    private Map<String, BigDecimal> differenceHead;

    @ApiModelProperty(notes = "社保账号")
    private String socAccount;

    @ApiModelProperty(notes = "社保账号")
    private String meAccount;

    @ApiModelProperty(notes = "社保账号")
    private String pfAccount;

    @ApiModelProperty(notes = "签约主体")
    private String contractSubject;

    @ApiModelProperty(notes = "参保时间")
    private String socDate;

    @ApiModelProperty(notes = "滞纳金")
    private BigDecimal lateFees;

    @ApiModelProperty(notes = "缴费类型枚举转义")
    private String payCostTypeStr;

    @ApiModelProperty(notes = "社保状态枚举转义")
    private String empSocStatusStr;

    @ApiModelProperty(notes = "公积金状态枚举转义")
    private String empPfStatusStr;

    @ApiModelProperty(notes = "医保状态枚举转义")
    private String empMeStatusStr;

    @ApiModelProperty(notes = "参保管理新数据结构,动态表头对应的数据")
    private Map<String, Object> data;

    @ApiModelProperty(notes = "甲方端小程序社保列表也子项状态")
    private Map<String, String> statusMap;

    @ApiModelProperty(notes = "性别(枚举)")
    private Integer gender;

    @ApiModelProperty(notes = "性别")
    private String sex;

    @ApiModelProperty(notes = "头像")
    private String avatar;

    @ApiModelProperty(notes = "员工是否已被删除")
    private Boolean empIsValid;
}

